package com.zpark.util;

import com.zpark.entity.EvaluateData;
import com.zpark.entity.SuccessData;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EvaluateUtil {
    static final String EVALUATE_REGEX = "INFO\\s(\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2})\\s([a-z0-9\\u4e00-\\u9fa5]*)\\s(EVALUATE)\\s\\[([a-z0-9\\u4e00-\\u9fa5]*)\\]\\s([a-z0-9]{32})\\s\\\"([a-z0-9\\.\\-\\,]{6,12})\\\"\\s([a-z\\u4e00-\\u9fa5]*)\\s\\\"([0-9\\.\\,]*)\\\"\\s\\[([0-9\\,\\.]*)\\]\\s\\\"(.*)\\\"";
    static final String SUCCESS_REGEX = "INFO\\s(\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2})\\s([a-z0-9\\u4e00-\\u9fa5]*)\\s(SUCCESS)\\s\\[([a-z0-9\\u4e00-\\u9fa5]*)\\]\\s([a-z0-9]{32})\\s\\\"([a-z0-9\\.\\-\\,]{6,12})\\\"\\s([a-z\\u4e00-\\u9fa5]*)\\s\\\"([0-9\\.\\,]*)\\\"\\s\\[([0-9\\,\\.]*)\\]\\s\\\"(.*)\\\"";
    static final Pattern EVALUATE_PATTERN = Pattern.compile(EVALUATE_REGEX,Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
    static final Pattern SUCCESS_PATTERN = Pattern.compile(SUCCESS_REGEX, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
    /**
     * 判断是否是评估数据;这个方法同时还能判断数据是否符合整体要求
     * @param data 日志信息(登录之前业务系统提交的数据，需要评估的数据)
     * @return Boolean类型，如果data是评估数据，就返回true
     */
    public static boolean isEvaluateData(String data){
        return EVALUATE_PATTERN.matcher(data).find();
    }
    /**
     * 判断是否是登录成功数据；这个方法同时还能判断数据是否符合整体要求
     * @param data 日志信息（登录成功之后业务系统提交的数据）
     * @return Boolean类型，如果data是登录成功数据，就返回true
     */
    public static boolean isSuccessData(String data){
        return SUCCESS_PATTERN.matcher(data).find();
    }
    /**
     * 获取到评估时间
     * @param data
     * @return
     */
    public static Date getEvaluate(String data){
        if(isSuccessData(data)){
            Matcher matcher = EVALUATE_PATTERN.matcher(data);
            String group1 = matcher.group(1);
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
            try {
                date = simpleDateFormat.parse(group1);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return date;
        }
        return null;
    }
    /**
     * 把所有的数据封装形成一个实体对象-->评估数据
     * @param data
     * @return
     */
    public static EvaluateData getEvaluateData(String data){
        return null;
    }
    /**
     * 把所有的数据封装形成一个实体对象-->登录成功数据
     * @param data
     * @return
     */
    public static SuccessData getSuccessData(String data){
        return null;
    }

}
